// #include <bits/stdc++.h>
// using namespace std;

// typedef pair<int, int> PII;
// const int N = 1010;

// int n;
// int g[N][N];    // 存储地图，0表示马路
// int dist[N][N]; // 存储距离
// queue<PII> q;   // BFS队列

// // 方向数组：上右下左
// int dx[] = {-1, 0, 1, 0};
// int dy[] = {0, 1, 0, -1};

// int bfs(int x1, int y1, int x2, int y2)
// {
//     // 起点或终点不可达
//     if (g[x1][y1] != 0 || g[x2][y2] != 0)
//         return -1;

//     memset(dist, -1, sizeof(dist));
//     q.push({x1, y1});
//     dist[x1][y1] = 0;

//     while (!q.empty())
//     {
//         auto t = q.front();
//         q.pop();

//         // 遍历四个方向
//         for (int i = 0; i < 4; i++)
//         {
//             int a = t.first + dx[i];
//             int b = t.second + dy[i];

//             // 越界检查（1-based索引，范围是1到n）
//             if (a < 1 || a > n || b < 1 || b > n)
//                 continue;
//             // 可走性和访问检查
//             if (g[a][b] != 0 || dist[a][b] != -1)
//                 continue;

//             // 更新距离并入队
//             dist[a][b] = dist[t.first][t.second] + 1;
//             // 到达终点
//             if (a == x2 && b == y2)
//                 return dist[a][b];
//             q.push({a, b});
//         }
//     }
//     return -1; // 无法到达
// }

// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     cin >> n;

//     // 读取地图（无空格格式）
//     for (int i = 1; i <= n; i++)
//     {
//         string s;
//         cin >> s;
//         for (int j = 1; j <= n; j++)
//             g[i][j] = s[j - 1] - '0'; // 字符转数字，注意s的索引是0-based
//     }

//     // 读取坐标（1-based）
//     int x1, y1, x2, y2;
//     cin >> x1 >> y1 >> x2 >> y2;

//     cout << bfs(x1, y1, x2, y2);
//     return 0;
// }

// #include <bits/stdc++.h>
// using namespace std;

// const int N = 1010;
// typedef pair<int, int> PII;
// int n;
// int dist[N][N];
// char g[N][N];
// queue<int> PII;
// int x1, y1, x2, y2;
// int bfs(int x1, int y1, int x2, int y2)
// {
//     memset();
// }
// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     cin >> n;
//     cin >> n;
//     for (int i = 1; i <= n; i++)
//     {
//         cin >> g[i] + 1;
//     }
//     cin >> x1 >> y1 >> x2 >> y2;
//     int res = bfs(x1, y1, x2, y2);
//     cout << res << endl;
//     return 0;
// }